package TreeMap_package2;

import java.util.StringJoiner;
import java.util.TreeMap;
import java.util.function.BiConsumer;

public class TreeMap_demo3 {
    public static void main(String[] args) {
        /*
        需求：字符串"abcbbbaaacccbabcabc"
            请统计字符串中每个字符出现的次数，并按照以下格式输出
            输出结果：
                a(6)b(7)c(6)
        新的统计思想：利用map集合进行统计
            如果题目中没有要求对结果进行排序，默认使用HashMap
            如果题目中要求对结果进行排序，请使用TreeMap

            键：表示要统计的内容
            值：表示次数
         */

        //1、定义字符串
        String s = "abcbbbaaacccbabcabc";

        //2、创建集合
        TreeMap<Character, Integer> tm = new TreeMap<>();

        //3、遍历字符串得到里面的每一个字符
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            //拿着c到集合中判断是否存在
            //存在，表示当前字符又出现了一次
            //不存在，表示当前字符是第一次出现
            if (tm.containsKey(c)) {
                //存在
                //先把已经出现的次数拿出来
                int count = tm.get(c);
                //当前字符又出现了一次
                count++;
                //把自增之后的结果再添加到集合当中
                tm.put(c, count);
            } else {
                //不存在
                tm.put(c, 1);
            }
        }

        //4、遍历集合，并按照指定的格式进行拼接
        StringBuilder sb = new StringBuilder();

        tm.forEach(new BiConsumer<Character, Integer>() {
            @Override
            public void accept(Character key, Integer value) {
                sb.append(key).append("(").append(value).append(")");
            }
        });
        System.out.println(sb);

    }
}
